Apparatuses and methods for row hammer based cache lockdown

ABSTRACT

Apparatuses, systems, and methods for row hammer based cache lockdown. A controller of a memory may include an aggressor detector circuit which determines if addresses are aggressor addresses or not. The controller may include a tracker circuit which may count a number of times an address is identified as an aggressor, and may determine if the aggressor address is a frequent aggressor address based on the count. If the address is a frequent aggressor address, a cache entry associated with the frequent aggressor address may be locked (e.g., for a set amount of time). In some embodiments, the controller may include a second tracker which may determine if the frequent aggressor address is a highly attacked address. An address mapping associated with the highly attacked address may be changed.

BACKGROUND

This disclosure relates generally to semiconductor devices, and more specifically to semiconductor memory devices. In particular, the disclosure relates to volatile memory, such as dynamic random access memory (DRAM). Information may be stored on individual memory cells of the memory as a physical signal (e.g., a charge on a capacitive element). The memory may be a volatile memory, and the physical signal may decay over time (which may degrade or destroy the information stored in the memory cells). It may be necessary to periodically refresh the information in the memory cells by, for example, rewriting the information to restore the physical signal to an initial value.

As memory components have decreased in size, the density of memory cells has greatly increased. Various access patterns to a particular memory cell or group of memory cells (often referred to as an attack) may cause an increased rate of data degradation in nearby memory cells. Memory cells affected by the attack may be identified and refreshed as part of a targeted refresh operation. A controller of the memory, and/or the memory itself, may track access patterns to various memory addresses in order to determine if they involved in an attack, so that they may be refreshed. However it may be useful to take additional actions beyond refreshing to mitigate data degradation.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a memory system according to some embodiments of the present disclosure.

FIG. 2 is a block diagram of a semiconductor device according an embodiment of the disclosure.

FIG. 3 is a block diagram of row hammer logic according to some embodiments of the present disclosure.

FIG. 4 is a block diagram of a cache and cache logic according to some embodiments of the present disclosure.

FIG. 5 is a block diagram of a method according to some embodiments of the present disclosure.

DETAILED DESCRIPTION

The following description of certain embodiments is merely exemplary in nature and is in no way intended to limit the scope of the disclosure or its applications or uses. In the following detailed description of embodiments of the present systems and methods, reference is made to the accompanying drawings which form a part hereof, and which are shown by way of illustration specific embodiments in which the described systems and methods may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice presently disclosed systems and methods, and it is to be understood that other embodiments may be utilized and that structural and logical changes may be made without departing from the spirit and scope of the disclosure. Moreover, for the purpose of clarity, detailed descriptions of certain features will not be discussed when they would be apparent to those with skill in the art so as not to obscure the description of embodiments of the disclosure. The following detailed description is therefore not to be taken in a limiting sense, and the scope of the disclosure is defined only by the appended claims.

Information in a volatile memory device may be stored in memory cells (e.g., as a charge on a capacitive element), and may decay over time. The memory cells may be organized into rows (wordlines) and columns (bit lines), in each bank of a memory array. The memory cells may be refreshed on a row-by-row basis. In order to prevent information from being lost or corrupted due to this decay, the memory may carry out a background refresh process, such as auto-refresh operations as part of a self-refresh mode. During a refresh operation, information may be rewritten to the wordline to restore its initial state. The auto-refresh operations may be performed on the wordlines of the memory in a sequence such that over time the wordlines of the memory are refreshed at a rate faster than the expected rate of data degradation.

Various attack patterns, such as repeated access to a particular row of memory (e.g., an aggressor row) may cause an increased rate of decay in neighboring rows (e.g., victim rows) due, for example, to electromagnetic coupling between the rows. The pattern of repeated accesses may be referred to as a ‘row hammer’. These repeated accesses may be part of a deliberate attack against the memory and/or may be due to ‘natural’ access patterns of the memory. The row hammer attack may cause information to decay in the victim rows faster than a rate at which the auto-refresh operations may refresh the victim rows. Accordingly, aggressor rows may need to be monitored so that steps may be taken to mitigate or heal the damage before information is lost in the victim rows.

A controller of the memory may track accesses to different rows to determine if those rows are aggressors or not. An aggressor detector circuit may use one or more schemes to determine if a given address is an aggressor or not. For example, the aggressor detector may determine if a given row is accessed above a threshold number of times (or above a threshold rate) and/or may directly check for errors in the victim rows (e.g., with error correction circuitry). Various steps may be used to prevent and/or repair the damage to the victim rows. For example, a targeted refresh operation may be performed to refresh identified victims. However, targeted refresh operations may consume power and/or take time which could have been used for other operations. Accordingly, it may be desirable to mitigate attack damage through other methods (e.g., instead of or in addition to targeted refresh operations).

The present disclosure is drawn to apparatuses, systems, and methods for row hammer based cache lockdown. The controller (and/or memory) may include a cache. A set of the most recent data accessed from the memory may be stored in the cache, which may allow more rapid access to recently accessed information. Information stored in the cache may not be susceptible to the row hammer effect (or may be less susceptible). The controller may include logic, which may determine a number of times (and/or a rate) at which an identified row of the memory (e.g., an aggressor row) is accessed. If the number of times (and/or rate) is above a first threshold, the controller may manage the entry in the cache associated with an address associated with the identified row. For example, the cache may be managed in such a way as to ensure that the data associated with the identified row remains in the cache for at least a minimum amount of time.

In an example embodiment, the controller may include row hammer logic, which may count a number of times addresses are identified as aggressors. When that count exceeds a threshold (which may represent the row associated with the aggressor address being accessed at least a threshold number of times), the data associated with that aggressor address may be ‘locked’ so that it does not leave the cache even if the cache logic would otherwise evict it from the cache. Accordingly, while it remains locked in the cache, accesses to that aggressor address may access the information in the cache instead. This may reduce accesses to the memory array, and reduce the impact of the row hammer effect (e.g., by allowing time for the victim word lines to be refreshed as part of an auto-refresh operation).

In some embodiments, the controller may take additional steps if the row hammer tracker determines that an aggressor is frequently hammered (e.g., accessed more than a second threshold number of times). In addition to locking that data in the cache, the controller may re-map the physical word line associated with the aggressor address. For example, if the aggressor address was associated with a first word line, the controller may remap the word line so that it is now associated with a second word line, distant from the first word line. This may ensure that the victims (e.g., rows close to the first word line) are now distant from the address which is being hammered. In some embodiments, the remapped aggressor may also have a different distribution of data and/or a different type of memory to further mitigate the row hammer effect.

FIG. 1 is a block diagram of a memory system according to some embodiments of the present disclosure. The memory system 100 includes a controller 102 and a memory 104. The memory 104 includes a memory array 112 with a number of memory cells. The memory cells may be disposed at the intersection of word lines (WL, rows) and bit lines (digit lines, columns). The controller 102 may operate the memory 104 to perform access operations on the memory cells. For example, the controller 102 may write data to specified memory cells of the memory array 112 as part of a write operation and may read data from specified memory cells of the memory array 112 as part of a read operation.

The controller 102 may be coupled to the memory 104 by a number of buses. Shown in FIG. 1 are a data bus DQ and a command/address C/A bus. The controller 102 may include a processor 106 which may operate the memory 104 in part by providing commands and addresses along the C/A bus and sending and receiving data along the DQ bus. For example as part of a write operation, the processor 106 may provide a write command and an address ADD specifying one or more memory cells along the C/A bus, and may provide write data along the DQ bus. The memory 104 may then store that data to the memory cells specified by the address ADD. As part of an example read operation, the processor 106 may provide a read command and read addresses along the C/A bus and may receive read data from the memory cells specified by the address along the DQ bus.

The addresses may be associated with different memory cells of the memory array 112. For example, a column address YADD may specify one or more digit lines, a row address XADD may specify one or more word lines, and a bank address BADD may specify one or more banks of the memory array 112. The processor 106 may be coupled to an address map 108, which may specify which addresses are associated with which physical word lines WL of the memory array 112. For example, the address map 108 may indicate that a first value of the row address XADD is associated with the first word line WL0, a second value of the row address XADD is associated with a second word line WL1, etc.

The controller 102 may include a cache 110, which may be used to store information for rapid access. The cache 110 may include a data storage structure which may store information. The cache 110 may have a higher access speed than the memory 104. In some embodiments, the cache 110 may include a different type of memory cell than the memory cells in the memory 104. The cache 110 may store a set of the most recently accessed data from the memory 104. For example, data may be read from a word line, and that data may be stored in the cache 110. Any subsequent accesses to that data may be re-directed to the data stored in the cache 110 instead. The data may leave the cache (any changes to the data in the cache may be written to the memory 104) when more space is needed and the data is the oldest entry in the cache 110. The cache 110 may include a lock tag associated with the entries in the cache 110. The processor 106 may cause one or more entries in the cache 110 to become locked, in which case the data may remain in the cache until the lock is removed, even if it would otherwise be evicted from the cache.

Although the cache 110 is generally referred to herein as a component of the controller 102, in some embodiments, the cache may be located in the memory 104 (e.g., instead of or in addition to a controller side cache). It should be understood that various embodiments of the invention may also function with a memory-side cache in a manner analogous to the embodiments described with respect to a controller-side cache. For example, to impose a lockdown the controller 102 may provide a lock signal along a bus (e.g., the C/A bus) to the memory-side cache.

The controller 120 may include row hammer (RH) logic 120. The RH logic 120 may track the row addresses provided to the memory 104 as part of access operations, to determine if one or more rows is part of a (real or suspected) row hammer attack. Once the RH logic 120 determines that one or more rows is involved in an attack, it may take one or more steps to mitigate the harm.

For example, the RH logic 120 may identify a particular address of the memory 104 which is associated with a row (e.g., word line) of the memory array 112. For example, the particular address may be an aggressor address, and may be identified based on a number of accesses to the row exceeding a first threshold. The RH logic 120 may also determine the address is a frequent aggressor based, in part, on if a number of accesses to the row exceeds a second threshold (e.g., as determined by a same or different count value as used to track if the address is an aggressor). The RH logic 120 may, in some embodiments, also determine if the address is a highly attacked address based, in part, on if a number of accesses to the row exceeds a third threshold (e.g., as determined by a same or different count value as used to track if the address is a frequent aggressor).

The RH logic 120 may include a RH detector 122. The RH detector 122 may utilize one or more schemes to monitor access patterns to rows to determine if they are aggressors (e.g., targets of a RH attack or not). Embodiments of the present disclosure may use any type, or any combination of types, of row hammer detection. As used herein, the term aggressor row may be used to refer broadly to a row which meets the criteria set forth by the aggressor detector 122 to determine if a row is an aggressor or not. It is not necessary that such aggressor rows actually cause harm to nearby rows (e.g., victim rows). Similarly, as used herein, the term victim row may refer to rows which have some defined relationship to the aggressor row (e.g., adjacency, physical distance, etc.). It is not necessary that the victim rows experience an actual increased rate of data decay.

In some embodiments, the RH detector 122 may monitor a number of accesses and/or a frequency of access to addresses. For example, the RH detector 122 may receive a row address off the C/A bus and check to see if that address is in an aggressor storage structure. If it is not, the received address may be stored. If it is, the received address may be judged to be an aggressor. In some embodiments, if there is a match, a counter associated with the stored may be updated, and once the counter crosses a threshold, the received address may be judged to be an aggressor. In some embodiments, rather than receive every address off the C/A bus, sampling may be used. For example a sampling signal may be activated with random timing, semi-random timing, pseudo-random timing, periodic timing, timing based on one or more other signals, or combinations thereof. When the sampling signal is activated, a next value of address along the C/A bus may be received by the RH detector 122. In some embodiments, the RH detector 122 may check for row hammer events based on actual errors in the data read from the memory 104. For example the memory may include an error correction code (ECC) circuit which may check data for errors. If an error is detected, this may be communicated to the controller 102 and the controller 102 may determine that the data was read from a victim row.

The RH logic 120 may also include an RH tracker 124, which may be used to monitor a number of times (and/or a frequency) at which certain addresses are determined to be aggressors, which in turn may represent a number of times (and/or frequency) at which the certain address is accessed. For example, the RH tracker 124 may include a first data storage structure 126 which may store addresses and count values. When the RH detector 122 determines that an address is an aggressor, the RH tracker 124 may compare the value of the aggressor to the stored addresses. If there is a match, the count value associated with that stored address may be updated (e.g., incremented). If there is not a match, the RH tracker 124 may check to see if there is open space in the first data storage structure 126. If there is, the address may be stored, and the count associated with that address may be initialized (e.g., set to an initial value, such as 0). In some embodiments, a time stamp (not shown) associated with the address may be also be recorded. If there is not open space, then the RH tracker 124 may use one or more criteria to determine what happens (e.g., the stored address with the lowest count may be replaced, the stored address with the oldest time stamp may be replaced, etc.).

The RH tracker 124 may monitor the count values in the first data storage structure 126. The count values may be compared to a first threshold (e.g., each time one of the count values is updated). When the count value exceeds the threshold, the RH tracker 126 may determine that the aggressor address is a frequent aggressor address may provide a lock signal to the cache 110 (e.g., via the processor 106). The cache 110 may lock the data associated with the frequent aggressor row address in the cache 110. This may keep the data in the cache 110, which may prevent subsequent accesses to the memory 104 as long as the lock remains. Since the data is no longer being accessed in the memory 104, the accesses may no longer hammer that word line of the memory 104. The controller 102 may use various criteria to determine when to remove the lock. For example, the lock may be removed after a period of time (e.g., a number of clock cycles) has elapsed. When the data is evicted from the cache 110 (e.g., after the lock expires), if there were any changes to the data (e.g., via write operations), then the updated data may be written back to the memory 104 from the cache 110.

In some embodiments, the RH tracker 124 may also include a secondary data storage structure 128. While the use of a cache lockdown may offer a method of mitigating the row hammer attack for a period of time, in some situations, the attack may be serious enough to warrant a more long-term solution. The secondary data storage structure 128 may track a number of times that a given address is identified as an aggressor address. For example, each time that a count in the first data storage structure 126 exceeds a threshold, that address may be provided to the secondary data storage structure 128. The secondary data storage structure 128 may operate in a manner analogous to the primary data storage structure 126. Each time an address is received, it may be compared to the addresses already stored in the second data storage structure 128, and if there is a match, a count associated with that stored address may be changed (e.g., incremented). If the count exceeds a second threshold, it may indicate that the associated address is a highly attacked address.

In some embodiments, rather than including a secondary data storage structure 128, the RH logic may use the first data storage structure 126 to identify highly attacked addresses. For example, when the count in the first data storage structure 126 passes a first threshold, the associated address may be judged to be a frequent aggressor address. The data storage structure 126 may continue to monitor the count value, and if the count value in the first data storage structure 126 passes a second threshold then the associated address may be determined to be a highly attacked address. In such embodiments, the secondary data storage structure 128 may be omitted.

Responsive to determining that an address is a highly attacked address, the RH logic 120 may provide the highly attacked address to the processor 106. In some embodiments the RH logic 120 may also provide one or more additional signals indicating that the address is a highly attacked address. The processor 106 may alter the address map 108 based on the highly attacked address. The address map 108 may allow the processor 106 to determine where information is stored in the memory array 112. The processor 106 may alter the highly attacked address in the address map 108 in order to mitigate and/or prevent row hammer attacks to that address.

The address map 108 may include a map of virtual addresses. The virtual addresses may be accessible to an operating system which is run on the processor 106. The address map 108 may include a physical address map which may instruct the processor 106 how to generate physical address signals based on the virtual address accessed by the operating system. The address map 108 may include a physical to device map, which may indicate how the physical address is actually distributed across the structure of the memory array 112.

In some embodiments, responsive to a highly attacked address, the processor 106 may change a physical address associated with the highly attacked address. For example, the highly attacked address may a row address XADD2 associated with a word line WL2 in the memory array 112. The processor 106 may alter the physical address map so that the address XADD2 is now associated with a word line WL6, and may copy the data which was previously stored on the word line WL2 onto the word line WL6 (and the data which was on WL6 to WL2). This may move the address XADD2 so that it is accessing a word line which is remote from its previous victims (e.g., WL1 and WL3). The address which was previously associated with the replacement word line WL6 (e.g., XADD6) may be remapped in the address map 108 so that it now is associated with the word line WL2.

In some embodiments, the memory 104 may include a first memory region (e.g., memory array 112) and a second memory region 113. The second memory region 113 may represent a different memory array or a portion of the same memory array. In some embodiments, the address map 108 may be altered to remap a highly attacked address from the first region 112 to the second region 113. In some embodiments, the second memory region 113 may have different properties which make information stored therein less susceptible to the row hammer effect.

For example, the second memory section 113 may include a different type of memory cell than the primary memory array 112. For example the memory array 112 may include a first type of memory cells (e.g., DRAM cells), while the second memory region 113 may include a second type of memory cell (e.g., SRAM, FeRAM, flash, etc. cells). In some embodiments, responsive to a highly attacked address, the processor 106 may alter the address map 108 such that the highly attacked address is remapped from the first type of memory cell (e.g., in memory array 112) to the second type of memory cell (e.g., in second memory region 113).

In some embodiments, the processor 106 may alter the physical to device mapping of a highly attacked address. The memory 104 may include a first section 112 with a first type of physical to device mapping and a second section 113 with a second type of physical to device mapping. The highly attacked address may be remapped from one section to the other. For example, the first memory region 112 may have a first type of striping, and the second memory region 113 may have a second type of striping.

FIG. 2 is a block diagram of a semiconductor device according an embodiment of the disclosure. The semiconductor device 200 may be a semiconductor memory device, such as a DRAM device integrated on a single semiconductor chip. The semiconductor device 200 may, in some embodiments, be included in the memory 104 of FIG. 1.

The semiconductor device 200 includes a memory array 218 (e.g., memory array 112 and/or second memory region 113 of FIG. 1). The memory array 218 is shown as including a plurality of memory banks. In the embodiment of FIG. 1, the memory array 218 is shown as including eight memory banks BANK0-BANK7. More or fewer banks may be included in the memory array 218 of other embodiments. Each memory bank includes a plurality of word lines WL, a plurality of bit lines BL and /BL, and a plurality of memory cells MC arranged at intersections of the plurality of word lines WL and the plurality of bit lines BL and /BL. The selection of the word line WL is performed by a row decoder 208 and the selection of the bit lines BL and /BL is performed by a column decoder 210. In the embodiment of FIG. 1, the row decoder 208 includes a respective row decoder for each memory bank and the column decoder 210 includes a respective column decoder for each memory bank. The bit lines BL and /BL are coupled to a respective sense amplifier (SAMP). Read data from the bit line BL or /BL is amplified by the sense amplifier SAMP, and transferred to read/write amplifiers 220 over complementary local data lines (LIOT/B), transfer gate (TG), and complementary main data lines (MIOT/B). Conversely, write data outputted from the read/write amplifiers 220 is transferred to the sense amplifier SAMP over the complementary main data lines MIOT/B, the transfer gate TG, and the complementary local data lines LIOT/B, and written in the memory cell MC coupled to the bit line BL or /BL.

The semiconductor device 200 may employ a plurality of external terminals that include command and address (C/A) terminals coupled to a command and address bus to receive commands and addresses, and a CS signal, clock terminals to receive clocks CK and /CK, data terminals DQ to provide data, and power supply terminals to receive power supply potentials VDD, VSS, VDDQ, and VSSQ. A controller (e.g., 102 of FIG. 1) may be coupled to various terminals via one or more buses in order to send and receive various signals to or from the memory device 200.

The clock terminals are supplied with external clocks CK and /CK by the controller. The clock signals are provided to an input circuit 212. The external clocks may be complementary. The input circuit 212 generates an internal clock ICLK based on the CK and /CK clocks. The ICLK clock is provided to the command decoder 210 and to an internal clock generator 214. The internal clock generator 214 provides various internal clocks LCLK based on the ICLK clock. The LCLK clocks may be used for timing operation of various internal circuits. The internal data clocks LCLK are provided to the input/output circuit 222 to time operation of circuits included in the input/output circuit 222, for example, to data receivers to time the receipt of write data.

The C/A terminals may be supplied with memory addresses by the controller. The memory addresses supplied to the C/A terminals are transferred, via a command/address input circuit 202, to an address decoder 204. The address decoder 204 receives the address and supplies a decoded row address XADD to the row decoder 208 and supplies a decoded column address YADD to the column decoder 210. The address decoder 204 may also supply a decoded bank address BADD, which may indicate the bank of the memory array 218 containing the decoded row address XADD and column address YADD. The C/A terminals may be supplied with commands by the controller. Examples of commands include timing commands for controlling the timing of various operations, access commands for accessing the memory, such as read commands for performing read operations and write commands for performing write operations, as well as other commands and operations. The access commands may be associated with one or more row address XADD, column address YADD, and bank address BADD to indicate the memory cell(s) to be accessed.

The commands may be provided as internal command signals to a command decoder 206 via the command/address input circuit 202. The command decoder 206 includes circuits to decode the internal command signals to generate various internal signals and commands for performing operations. For example, the command decoder 206 may provide a row command signal to select a word line and a column command signal to select a bit line.

The device 200 may receive an access command which is a read command from the controller. When a read command is received, and a bank address, a row address and a column address are timely supplied with the read command, read data is read from memory cells in the memory array 218 corresponding to the row address and column address. The read command is received by the command decoder 206, which provides internal commands so that read data from the memory array 218 is provided to the read/write amplifiers 220. The read data is output to outside from the data terminals DQ via the input/output circuit 222.

The device 200 may receive an access command which is a write command from the controller. When the write command is received, and a bank address, a row address and a column address are timely supplied with the write command, write data supplied to the data terminals DQ is written to a memory cells in the memory array 218 corresponding to the row address and column address. The write command is received by the command decoder 206, which provides internal commands so that the write data is received by data receivers in the input/output circuit 222. Write clocks may also be provided to the external clock terminals for timing the receipt of the write data by the data receivers of the input/output circuit 222. The write data is supplied via the input/output circuit 222 to the read/write amplifiers 220, and by the read/write amplifiers 220 to the memory array 218 to be written into the memory cell MC.

The device 200 may also receive commands from the controller causing it to carry out one or more refresh operations as part of a self-refresh mode. In some embodiments, the self-refresh mode command may be externally issued to the memory device 200 (e.g., by the controller 102 of FIG. 1). In some embodiments, the self-refresh mode command may be periodically generated by a component of the device. In some embodiments, when an external signal indicates a self-refresh entry command, the refresh signal AREF may also be activated. The refresh signal AREF may be a pulse signal which is activated when the command decoder 206 receives a signal which indicates entry to the self-refresh mode. The refresh signal AREF may be activated once immediately after command input, and thereafter may be cyclically activated at desired internal timing. The refresh signal AREF may be used to control the timing of refresh operations during the self-refresh mode. Thus, refresh operations may continue automatically. A self-refresh exit command may cause the automatic activation of the refresh signal AREF to stop and may cause the device 200 to return to an idle state and/or resume other operations.

The refresh signal AREF is supplied to the refresh control circuit 216. The refresh control circuit 216 supplies a refresh row address RXADD to the row decoder 208, which may refresh one or more wordlines WL indicated by the refresh row address RXADD. In some embodiments, the refresh address RXADD may represent a single wordline. In some embodiments, the refresh address RXADD may represent multiple wordlines, which may be refreshed sequentially or simultaneously by the row decoder 208. In some embodiments, the number of wordlines represented by the refresh address RXADD may vary from one refresh address to another. The refresh control circuit 216 may control a timing of the refresh operation, and may generate and provide the refresh address RXADD. The refresh control circuit 216 may be controlled to change details of the refreshing address RXADD (e.g., how the refresh address is calculated, the timing of the refresh addresses, the number of wordlines represented by the address), or may operate based on internal logic.

The refresh control circuit 216 may selectively output a targeted refresh address (e.g., which specifies one or more victim address based on an aggressor) or an automatic refresh address (e.g., from a sequence of auto-refresh addresses) as the refresh address RXADD. Based on the type of refresh address RXADD (and in some embodiments, one more additional signals indicating the type of operation), the row decoder 208 may perform a targeted refresh or auto-refresh operation. The automatic refresh addresses may be from a sequence of addresses which are provided based on activations of the refresh signal AREF. The refresh control circuit 216 may cycle through the sequence of auto-refresh addresses at a rate determined by AREF. In some embodiments, the auto-refresh operations may generally occur with a timing such that the sequence of auto-refresh addresses is cycled such that no information is expected to degrade in the time between auto-refresh operations for a given wordline. In other words, auto-refresh operations may be performed such that each wordline is refreshed at a rate faster than the expected rate of information decay.

The power supply terminals are supplied with power supply potentials VDD and VSS. The power supply potentials VDD and VSS are supplied to an internal voltage generator circuit 224. The internal voltage generator circuit 224 generates various internal potentials VPP, VOD, VARY, VPERI, and the like based on the power supply potentials VDD and VSS supplied to the power supply terminals. The internal potential VPP is mainly used in the row decoder 208, the internal potentials VOD and VARY are mainly used in the sense amplifiers SAMP included in the memory array 218, and the internal potential VPERI is used in many peripheral circuit blocks.

The power supply terminals are also supplied with power supply potentials VDDQ and VSSQ. The power supply potentials VDDQ and VSSQ are supplied to the input/output circuit 222. The power supply potentials VDDQ and VSSQ supplied to the power supply terminals may be the same potentials as the power supply potentials VDD and VSS supplied to the power supply terminals in an embodiment of the disclosure. The power supply potentials VDDQ and VSSQ supplied to the power supply terminals may be different potentials from the power supply potentials VDD and VSS supplied to the power supply terminals in another embodiment of the disclosure. The power supply potentials VDDQ and VSSQ supplied to the power supply terminals are used for the input/output circuit 222 so that power supply noise generated by the input/output circuit 222 does not propagate to the other circuit blocks.

FIG. 3 is a block diagram of row hammer logic according to some embodiments of the present disclosure. The row hammer logic 300 may, in some embodiments, be included in the row hammer logic 120 of FIG. 1. The row hammer logic 300 represents an embodiment where a count based scheme is used for the aggressor detector and the RH tracker logic. Other methods of detecting aggressor addresses and tracking the frequency (and/or number of times) that those aggressors appear may be used in other example embodiments.

The row hammer logic 300 includes an aggressor detector circuit 310 (e.g., RH detector 122 of FIG. 1). The aggressor detector circuit 310 includes a data storage structure which holds a number of row addresses XADD and a number of counts, each associated with one of the stored row addresses XADD (and/or with one of the storage slots). The aggressor detector circuit 310 also includes detector logic 312, which manages the information stored in the aggressor storage structure 310.

The data storage structure may be organized into slots, each of which may store a row address (e.g., XADD0 to XADDi) and an associated count value (e.g., Count0 to Counti). Each slot may include a number of individual cells, each of which may store a bit of information. In some embodiments, the data storage structure may include content addressable memory (CAM) cells, which may provide a match signal if a provided comparison bit matches the stored bit.

The detector logic 312 may receive a row address XADD from the row address bus. The row address XADD may be associated with an access operation that the controller (e.g., controller 102) is performing on the memory (e.g., 104 of FIG. 1). The detector logic 312 may compare the received address to the stored addresses XADD0 to XADDi. If the received address matches one of the stored addresses, the count associated with that stored address may be changed (e.g., incremented). If there is not a match, the detector logic 312 may store the received address XADD in the storage structure. For example, if there is an open slot in the data storage structure, the address XADD may be stored in that open slot. If there is not an open slot, then one or more criteria may be used to determine which of the stored addresses should be replaced (e.g., the one with the lowest count value). In some embodiments, when a new address is stored in the data storage structure, the count value may be reset to an initial value (e.g., 0). In some embodiments, if the new address replaces a previously stored address, the count value associated with the previously stored address may be kept.

After updating a count value, the detector logic 312 may compare the updated count value to a first threshold Thresh1. If the updated count value exceeds the threshold Thresh1 (or if it meets or exceeds the threshold Thresh1), then the detector logic 312 may determine that the received row address XADD represents an aggressor address HitXADD. The aggressor address HitXADD may be provided to the memory (and/or a signal indicating that the address is an aggressor may be provided), so that the memory may perform a targeted refresh operation on victim word lines associated with that aggressor address (e.g., HitXADD+1, HitXADD−1, HitXADD+2, HitXADD−2, etc.). Responsive to determining that the row address XADD, and its stored counterpart, was an aggressor, the detector logic 312 may change the count value associated with the aggressor address. For example, the count value may be reduced (e.g., by the threshold Thresh1) or may be reset (e.g., to 0). In some embodiments, the stored address may be cleared responsive to being provided as the aggressor address HitXADD.

In some embodiments, the threshold Thresh1 may be inherent to the structure used to hold the count value. For example, the count may be stored as an N-bit number, with 2{circumflex over ( )}N possible states. Each time there is a match, the count value may be incremented. When it reaches its maximum value, it may ‘roll-over’ back to an initial value (e.g., 0). The detector logic 312 may treat the rolling over as the count exceeding the threshold, and thus the maximum value of the count may act as the threshold.

In some embodiments, the aggressor detector 310 may sample row addresses XADD off the row address bus rather than receiving every row address XADD. An optional sample timing circuit 302 may provide a sample timing signal ArmSample. When the sampling signal ArmSample is activated, the detector logic 312 may capture the next value of XADD (e.g., the next time ACT is provided). The sample timing circuit 302 may provide the signal ArmSample with random timing, semi-random timing, pseudo-random timing, periodic timing, timing based off of one or more other signals (e.g., counts of ACT), or combinations thereof.

Other forms of aggressor detection may be used in other example embodiments. For example, rather than including a data storage structure and count values, the aggressor detector 310 may store addresses, and may provide the address XADD as the aggressor address HitXADD if the address XADD matches one of the stored addresses. In some embodiments, the aggressor detector 310 may provide any sampled address XADD as the address HitXADD. Other aggressor detection schemes may be used in other example embodiments.

The row hammer logic 300 also includes a first tracker circuit 320 and a second tracker circuit 330 (e.g., 126 and 128 respectively of FIG. 1). The tracker circuits 320 and 330 may generally be analogous to the aggressor detector 310, and so for the sake of brevity, features and operations already described with respect to the aggressor detector 310 will not be repeated for the tracker circuits 320 and 330.

The first tracker circuit 320 receives the aggressor address HitXADD and determines if the aggressor address HitXADD is a frequent aggressor address FreqHitXADD. The first tracker circuit 320 may store received aggressor addresses HitXADD along with associated count values, and determine if an address is a frequent aggressor address FreqHitXADD based, in part, on a comparison of the count value to a threshold Thresh2.

The identified frequent aggressor addresses FreqHitXADD may be provided to a processor (and/or a signal may be provided indicating that a frequent aggressor has been located), and the processor may lock the data in the cache associated with the frequent aggressor address. Since subsequent accesses to that data will be in the cache rather than in the memory array, this may mitigate hammering of the word line in the memory array.

The second tracker circuit 330 may receive the frequent aggressor address FreqHitXADD and determine if the frequent aggressor address FreqHitXADD is a highly attacked address VHAXADD. The second tracker circuit 330 may store received frequent aggressor addresses FreqHitXADD from the second tracker circuit 320, and may store the received frequent aggressor addresses along with associated count values. The second tracker circuit 330 may determine if the frequent aggressor address FreqHitXADD is a highly attacked address VHAXADD based, in part, on a comparison of the associated count value to a threshold Thresh3.

The identified highly attacked address VHAXADD may be provided to a processor (and/or a signal may be provided indicating that a highly attacked address has been located), and the processor may alter the address map to change a word line associated with the address VHAXADD. For example, the address VHAXADD may be remapped to a different wordline that is distant from the word line originally associated with VHAXADD. In some embodiments, the address VHAXADD may be remapped to a different section of the memory array, which may be less susceptible to the row hammer effect. For example the new section may have different physical to device mapping (e.g., different striping), may include different types of memory cell, or combinations thereof.

In some embodiments, the second tracker circuit 330 may be omitted and the row hammer tracker 300 may not detect highly attacked addresses.

In some embodiments, the second tracker circuit 330 may be omitted and the first tracker circuit 320 may identify both the frequent aggressor addresses FreqHitXADD and the highly attacked addresses VHAXADD. For example, the tracker logic 322 may include two threshold values (e.g., Thresh2 and Thresh3). When the count value exceeds the threshold Thresh2, the address HitXADD may be judged to be a frequent aggressor FreqHitXADD and the count value may be maintained. If the count value then exceeds a second threshold (e.g., Thresh3), then the address may be judged to be a highly attacked address VHAXADD.

In some embodiments, the tracker circuits 320 and/or 330 may include a time stamp associated with each address and count value. When a new address is written to the trackers 320 and/or 330, either in an open slot or overwriting a previous entry, the tracker logic 322 or 332 respectively may write a time stamp which represents a time when that entry was added. If there are no open slots, then when a new entry needs to be added, the entry with the oldest time stamp may be replaced with the new entry.

FIG. 4 is a block diagram of a cache and cache logic according to some embodiments of the present disclosure. The cache 402 may, in some embodiments, be included in the cache 110 of FIG. 1. The cache logic 404 may, in some embodiments, represent one or more operations of a processor (e.g., 106 of FIG. 1) and/or other logic circuits of the controller (e.g., 102 of FIG. 1).

The cache 402 may include a data storage structure, which may temporarily store data retrieved from a memory. For example, when the controller issues a read command to the memory, the data retrieved as part of that read operation may be stored in the cache 402. Subsequent accesses to that data may access the data stored in the cache 402 rather than accessing the word line in the memory. The data storage structure may include a number of slots, each of which may store data, and an address Addr, a time stamp Time, and a lock flag Lock associated with that data.

The cache logic 404 shows various components which may manage the contents of the cache 402. For example, read/write logic 406 may determine if data is accessed from the cache 402 or if that data should be accessed from the memory. The cache management logic 408 may manage entries in the cache 402.

When data is retrieved from the memory, the cache management logic 408 may store that data stored in the cache 402 along with a time stamp Time which indicates when that data was accessed. If the cache 402 is full, the cache management logic 408 may check the time stamps in the cache 402 and the data in the cache 402 which has the oldest time stamp may be replaced. When data is added to the cache, the R/W logic 406 may indicate that accesses to the address(es) associated with that data should be redirected to the cache 402 rather than the memory.

For example read operations may be performed by receiving an address. The R/W logic 406 may check the address against the addresses in the cache 402 (and/or an address map may indicate that the data is in the cache) and the data associated with that address may be read out from the cache 402. Similarly a write operation may be performed by writing information to the entry in the cache 402. When data leaves the cache 402, the R/W logic 406 may determine if any changes were made to the data in the cache 402 (e.g., due to write operations) and may write the changed data back to the memory.

The cache logic 404 may include lock logic 410 which may manage lock operations in the cache 402. For example, each slot of the cache 402 may include a lock flag. In some example embodiments, the lock flag may be a single bit, which may be active to indicate the entry in that slot is locked, and inactive to indicate the entry in that slot is not locked. When a particular slot is locked, the normal criteria for removing entries from the cache 402 may be overridden, and the locked entry may remain in the cache 402. For example, when a new entry is received and there are no open slots in the cache 402, the cache management logic 408 may check the time stamps and locate the slot which is associated with the oldest time stamp. However, if the lock flag of that slot is active (e.g., the data is locked in the cache), then the cache management logic 408 may proceed to the slot with the next oldest time stamp which has an inactive lock flag.

The lock logic 410 may use various criteria to determine when to activate the lock flag of a given entry, and when to inactivate an active lock flag. For example, responsive to receiving a frequent aggressor address FreqHitXADD, the lock logic 410 may activate the lock flag in the cache slot associated with the frequent aggressor address FreqHitXADD. The lock logic 410 may include a timer, and may maintain the lock on the entry associated with FreqHitXADD for at least a set period of time. Once the timer indicates that the amount of time has elapsed (e.g., based on a comparison of the current time with the time stamp associated with the entry), the lock logic 410 may inactivate the lock associated with the entry.

FIG. 5 is a block diagram of a method according to some embodiments of the present disclosure. The method 500 may, in some embodiments, be implemented on one or more of the apparatuses or systems described herein (e.g., in FIGS. 1-4). The method 500 shows a particular arrangement of steps, however other arrangements of steps may be used in other embodiments.

The method 500 may generally begin with box 505, which describes identifying a row of memory associated with a particular address, for example by determining if an address is an aggressor address. The address may be part of an access operation performed by a controller on a memory. The controller (e.g., 102 of FIG. 1) may provide the address along with a command along a command address (C/A) bus to the memory. The address may specify one or more organizational levels of the memory. For example, a row address may specify one or more rows (word lines) of the memory.

The controller may use one or more criteria to determine if the address is an aggressor address. Any scheme or combination or schemes to detect an aggressor address may be used. For example, the controller may monitor a number of times that a given address is provided, a frequency of accesses to the address, or combinations thereof. In some embodiments, the controller may use error tracking to determine when an address is an aggressor address.

Box 505 may generally be followed by box 510 which describes determining if the aggressor address is a frequent aggressor address. The controller may monitor a number of times and/or a frequency at which an aggressor address is identified (e.g., a number and/or frequency of accesses to the row associated with the aggressor address) and then may determine if the aggressor address is a frequent aggressor address based on the number and/or frequency. Box 510 shows a particular implementation of how to determine if the aggressor is a frequent aggressor address (e.g., boxes 515-535) however other implementations may be used in other embodiments.

Box 515 describes comparing the particular address (e.g., the aggressor) to a plurality of stored addresses and changing a count value based, in part, on that comparison. For example, box 515 may describe determining if the aggressor address is present in a row hammer (RH) tracker circuit (e.g., 124 of FIG. 1). The RH tracker circuit may include a data structure (e.g., 126 of FIG. 1) which may store aggressor addresses along with various other information associated with that aggressor address. The aggressor address may be compared to the addresses already stored in the data storage structure.

If there is a match, the method may proceed to box 520, which describes storing the aggressor address in the RH tracker circuit. For example, if there is an open slot in the data storage structure, the aggressor address may be stored and a count value associated with the aggressor address may be initialized. In some embodiments, a time stamp may be stored indicating when the aggressor address was stored. If there is not an open slot in the data storage structure, an existing entry may be overwritten. For example, the entry with the lowest count value or the oldest time stamp may be overwritten.

If there is a match between the aggressor address and one of the stored addresses, then the box 515 may be followed by box 525, which describes changing a count value associated with the stored aggressor address. For example, the count value may be incremented.

Box 525 may generally be followed by box 530, which describes determining if the row of the memory (associated with the aggressor address) has been accessed at least a threshold number of times based, in part, on the count value. For example, box 520 may describe determining if the count value is greater than a first threshold value. If the count value is not, then the aggressor may be judged to not be a frequent aggressor address and the method 500 may return to box 505. If the count value is greater than the threshold, then the aggressor address may be judged to be a frequent aggressor address and box 525 may be followed by box 530.

Box 530 describes managing a cache entry associated with the particular address based, in pan, on the determination that the row of the memory has been accessed at least the threshold number of times. For example box 530 may describe locking a cache entry associated with the frequent aggressor address. For example, cache logic may activate a lock flag associated with the cache entry. While the lock flag is active, the data may remain in the cache, which may override other criteria used to determine when the data leaves the cache. The method 500 may include deactivating the lock flat a set time after activating the lock flag.

The method 500 may include retrieving data from a memory array of the memory and storing the data in the cache (which may be part of the memory or part of the controller). While the data is in the cache, the method 500 may include directing accesses to that data to the cache rather than to the memory array. The method 500 may include evicting the data from the cache, which may include writing the evicted data back to the memory. The method 500 may include preventing data from being evicted while the lock flag associated with the data is active.

Block 510 may generally be followed by block 540 if the aggressor address is determined to be a frequent aggressor address. Block 540 describes determining if the frequent aggressor address is a highly attacked address. The method 500 may include tracking a number of times and/or a frequency at which a given address is identified as a frequent aggressor address and then determining that the frequent aggressor address is a highly attacked address based on the number and/or frequency. For example block 540 may describe describes determining if the row of the memory has been accessed at least a second threshold number of times.

Various methods may be used to determine if the frequent aggressor address is a highly attacked address. For example, in a manner analogous to the method described in boxes 515-530, the RH tracker circuit may include a second data structure (e.g., 128 of FIG. 1) which may store frequent addresses along with various other information associated with that frequent aggressor address. A count value may be changed based on a comparison of the frequent aggressor address to the stored frequent aggressor addresses and comparing the count to a second threshold may determine if the frequent aggressor address is a highly attacked address.

If the frequent aggressor address is not a highly attacked address, the method may return to box 505. If the frequent aggressor address is determined to be a highly attacked address, then box 540 may generally be followed by box 545, which describes remapping the highly attacked address. For example, the method 500 may include remapping the highly attacked address from a first memory region with a first type of striping to a second memory region with a second type of striping.

As used herein, an activation of a signal may refer to any portion of a signals waveform that a circuit responds to. For example, if a circuit responds to a rising edge, then a signal switching from a low level to a high level may be an activation. One example type of activation is a pulse, where a signal switches from a low level to a high level for a period of time, and then back to the low level. This may trigger circuits which respond to rising edges, falling edges, and/or signals being at a high logical level. One of skill in the art should understand that although embodiments may be described with respect to a particular type of activation used by a particular circuit (e.g., active high), other embodiments may use other types of activation (e.g., active low).

Of course, it is to be appreciated that any one of the examples, embodiments or processes described herein may be combined with one or more other examples, embodiments and/or processes or be separated and/or performed amongst separate devices or device portions in accordance with the present systems, devices and methods.

Finally, the above-discussion is intended to be merely illustrative of the present system and should not be construed as limiting the appended claims to any particular embodiment or group of embodiments. Thus, while the present system has been described in particular detail with reference to exemplary embodiments, it should also be appreciated that numerous modifications and alternative embodiments may be devised by those having ordinary skill in the art without departing from the broader and intended spirit and scope of the present system as set forth in the claims that follow. Accordingly, the specification and drawings are to be regarded in an illustrative manner and are not intended to limit the scope of the appended claims. 

What is claimed is:
 1. An apparatus comprising: a processor configured to provide an address to a memory and receive data associated with that address; logic configured to identify a row of the memory associated with a particular address, change a count value associated with the particular address, and determine that the row of the memory associated with the particular address is activated at least a threshold number of times based on the count value; and a cache configured to store data associated with the particular address, and configured to manage the stored data in the cache based at least in part on the row being activated at least the threshold number of times.
 2. The apparatus of claim 1, wherein the logic is further configured to identify the row of the memory based in part on a determination that the row of the memory associated with the particular address is activated at least a second threshold number of times, wherein the second threshold number of times is less than the threshold number of times.
 3. The apparatus of claim 1, wherein the cache is configured to evict data from the cache based on one or more criteria, and wherein the cache manages the stored data by preventing the stored data from being evicted based at least in part on the row being activated at least the threshold number of times.
 4. The apparatus of claim 3, wherein the cache is configured to prevent the stored data from being evicted for at least a set amount of time.
 5. The apparatus of claim 1, wherein the logic is further configured to determine if the row of the memory associated with the particular address is activated at least a second threshold number of times and associate the particular address with a second row instead of the row when the particular address is activated at least the second threshold number of times.
 6. The apparatus of claim 5, wherein the logic is further configured to change a second count value, and wherein the logic is configured to determine if the row of the memory associated with the particular address is activated at least a second threshold number of times based, at least in part, on the second count value.
 7. The apparatus of claim 5, wherein the row includes a first type of memory cell and wherein the second row includes a second type of memory cell different than the first type of memory cell.
 8. A system comprising: a memory; and a controller configured to operate the memory, the controller comprising: a processor configured to provide an address as part of an access operation; logic configured to identify a row of the memory associated with a particular address and change a count value associated with the particular address and determine that the row of the memory associated with the particular address is activated at least a threshold number of times based on the count value; and a cache configured to store data associated with the particular address retrieved from the memory, and configured to manage the stored data in the cache based at least in part on the row being activated at least the threshold number of times.
 9. The system of claim 8, wherein the logic is configured to identify the row of the memory associated with the particular address based at least in part on the row being activated at least a second threshold number of times.
 10. The system of claim 8, wherein the cache is configured to manage the stored data by keeping the stored data in the cache for at least a set amount of time.
 11. The system of claim 8, wherein the logic is further configured to determine if the row of the memory associated with the particular address is activated at least a second threshold number of times, and wherein the particular address is associated with a second row instead of the row based, at least in part, on the row being activated at least the second threshold number of times.
 12. The system of claim 11, wherein the memory includes a first region and a second region, and wherein the row is in the first region and the second row is in the second region.
 13. The system of claim 12, wherein the first region includes a first type of striping and wherein the second region includes a second type of striping.
 14. The system of claim 12, wherein the first region includes a first type of memory cell and the second region includes a second type of memory cell.
 15. A method comprising: identifying a row of memory associated with a particular address; comparing the particular address to a plurality of stored addresses and changing a count value based, in part, on the comparison; determining if the row of the memory has been accessed at least a threshold number of times based, in part, on the count value; and managing a cache entry associated with the particular address based, in part, on the determination that the row of the memory has been accessed at least the threshold number of times.
 16. The method of claim 15, further comprising: determining if the if the row of the memory has been accessed at least a second threshold number of times; and changing the association of the particular address to a second row of the memory.
 17. The method of claim 16, further comprising: comparing the particular address to a second plurality of stored addresses and changing a second count value based, in part, on the comparison; and determining if the row of the memory has been accessed at least the second threshold number of times based, in part, on the second count value.
 18. The method of claim 16, further comprising: comparing the count value to a first threshold value to determine if the memory has been accessed at least the first threshold number of times; and comparing the count value to a second threshold value to determine if the memory has been accessed at least the second threshold number of times.
 19. The method of claim 16, further comprising changing the association of the particular address from a first memory region to a second memory region.
 20. The method of claim 15, further comprising managing the cache entry by maintaining data associated with the particular address in a cache for at least a set amount of time. 